草庐IT

Java OutOfMemoryError 奇怪的行为

全部标签

java - Java 正则表达式中 `(.*)*` 、 `(.*)+` 、 `(.+)*` 的奇怪问题

为了重现最近问题中所述的问题-Whydoes(.*)*maketwomatchesandselectnothingingroup$1?我尝试了*和+的各种组合,在括号内外,我得到的结果出乎我的意料。我希望输出与该问题中接受的答案中解释的输出相同,并且在另一个重复的问题中被标记为Perl-Whydoesn'tthe.*consumetheentirestringinthisPerlregex?.但它的行为方式不同。为简单起见,这是我尝试的代码:-Stringstr="input";String[]patterns={"(.*)*","(.*)+","(.+)*","(.+)+"};for

java - 如何解释这种看似不一致的 Java 可变参数行为?

如果我写Java方法publicstaticvoidf(int...x){for(inta:x){System.out.println(a);}}然后我可以通过调用这个方法f(1,2,3);还有f(newint[]{1,2,3});并且两个调用的处理方式完全相同。然而,这两个电话Arrays.asList(1,2,3)//(a)producesathree-elementIntegerlist和Arrays.asList(newint[]{1,2,3})//(b)producesaone-elementlistofIntegerarrays不一样对待。Thesectiononevalu

java - Java 9 中不明确的内在行为

假设我有这段代码(我认为这真的无关紧要,但以防万一):publicclassAtomicJDK9{staticAtomicIntegerai=newAtomicInteger(0);publicstaticvoidmain(String[]args){intsum=0;for(inti=0;i下面是我调用它的方式(使用java-9):java-XX:+UnlockDiagnosticVMOptions-XX:-TieredCompilation-XX:+PrintIntrinsicsAtomicJDK9我想找出的是哪些方法被内部代码取代了。第一个被击中的(在Unsafe内部):@Hot

java - 调用 soap 时出现奇怪的错误 - llegalAccessError : tried to access field org. apache.cxf.staxutils.OverlayW3CDOMStreamWriter.isOverlaid

一段时间以来我一直在研究soap客户端,但我仍然无法弄清楚。我有这个错误:Exceptioninthread"main"java.lang.IllegalAccessError:triedtoaccessfieldorg.apache.cxf.staxutils.OverlayW3CDOMStreamWriter.isOverlaidfromclassorg.apache.cxf.binding.soap.saaj.SAAJStreamWriteratorg.apache.cxf.binding.soap.saaj.SAAJStreamWriter.getPrefix(SAAJStre

java - 测试 void 方法的行为

假设我有以下服务对象publicclassUserService{@AutowiredprivateUserDaodao;publicvoidaddUser(Stringusername,Stringpassword){if(username.length()我想测试“addUser”方法在用户名长度小于8和用户名大于8个字符时的行为。如何在单元测试UserService.addUser(...)方法中进行验证?我知道使用assert(),但是值“password”在addUser(...)方法之外不可用。我使用JUnit和Mockito。 最佳答案

java - Apache Derby 为我创建的具有有意义名称的索引提供了奇怪的名称

我正在使用这个ddl在derby中创建一个简单的演示表:CREATETABLEMY_TABLE(SESSION_IDCHAR(36),ATTRIBUTE_NAMEVARCHAR(200),CONSTRAINTMY_TABLE_PKPRIMARYKEY(SESSION_ID,ATTRIBUTE_NAME),);CREATEINDEXMY_TABLE_IX1ONMY_TABLE(SESSION_ID);我想在测试中验证是否实际创建了INDEXMY_TABLE_IX1​​。在线搜索我看到了两种可能的实现方法:JDBC-->使用DatabaseMetaData我可以按照以下方式做一些事情met

CS的流量行为特征

关于CS流量行为首先生成一个payload,在虚拟机中启用wireshark之后直接执行,可以捕获一个完整的流量信息。上线之后执行whoami,然后退出打开wireshark,过滤对话,通过C2地址可以过滤出CobaltStrike的流量。我这里按照传递数据包的大小排序了,可以看到最上面有一个传递payload(攻击载荷,Beacon)的会话。随后过滤相关数据包,直接推荐直接使用ip来过滤,防止漏掉会话流我这里因为执行了sleep0,所以流量看起来非常不清晰,所以这里我重新抓包分析。随后加上http协议过滤,可以看到业务流程首先是checksum8,这个原理来自这两处metasploit-fr

java - 初始化 block 的行为

我有一些我无法理解的代码,它是如何产生输出的。这是下面的代码-代码:classBird{{System.out.print("b1");}publicBird(){System.out.print("b2");}}classRaptorextendsBird{static{System.out.print("r1");}publicRaptor(){System.out.print("r2");}{System.out.print("r3");}static{System.out.print("r4");}}classHawkextendsRaptor{publicstaticvoid

java - 多线程 - 为什么下面的程序表现得如此奇怪?

类(class)大纲:我们有两个线程(t1和t2)写入一个整数值,然后将写入的值刷新到RAM。另一个线程(t3)检查该值是否与t1或t2写入的值一致,如果不一致,则打印。publicclassContainer{inta;volatilebooleanb;publicstaticvoidmain(String[]args){Containercontainer=newContainer();Threadt1=newThread(){@Overridepublicvoidrun(){for(;;){container.a=409;container.b^=container.b;}}};

java - 奇怪的 Java 并发修改异常示例

这个问题在这里已经有了答案:WhyamInotgettingajava.util.ConcurrentModificationExceptioninthisexample?(10个答案)关闭4年前。如果我们这样写,就会出现并发修改异常:publicstaticvoidmain(String...args){ListlistOfBooks=newArrayList();listOfBooks.add("ProgrammingPearls");listOfBooks.add("CleanCode");listOfBooks.add("EffectiveJava");listOfBooks.